Kapitel 23 Das Drucken (Printing)
23.1 Ein einführender Überblick  
Das Drucken gehörte noch nie zu den einfacheren Aufgaben eines Entwicklers. Das hat sich auch mit der Einführung von .NET im Jahr 2002 nicht geändert, obwohl vieles einfacher geworden ist. Die Problematik ist dabei nicht so sehr in der komplexen Programmierung zu suchen, sondern vielmehr in den verhältnismäßig stark miteinander verflochtenen, voneinander abhängigen Klassen.
Alle Klassen, die mit dem Drucken in direktem Zusammenhang stehen, hier aufzuzählen, wäre nicht sonderlich schwierig. Im Großen und Ganzen reicht es aber zunächst, zum Verständnis einer Druckoperation die drei wichtigsten zu kennen:
|
PrintDocument |
|
PageSettings |
|
PrinterSettings |
Alle sind Mitglieder des Namespace System.Drawing.Printing.
Die Klasse »PrintDocument«
Sie kennen es aus der täglichen Praxis: Sie klicken im Menü auf Drucken, und das aktuelle Dokument wird auf dem Drucker ausgegeben. Sie haben dem Drucker einen Druckauftrag mitgeteilt, man spricht auch von einem Druckjob. Dieser ist das Kernelement, um das sich alles dreht. Ein Druckjob wird unter .NET von der Klasse PrintDocument beschrieben. Im einfachsten Fall reichen zwei Zeilen Programmcode aus, um den Drucker zur Aktivität zu ermuntern. Sie werden das im nächsten Kapitel noch bestätigt sehen.
Die Klasse »PrinterSettings«
Die Ausführung eines Druckjobs setzt einen Drucker voraus. Jeder Drucker verfügt aber über unterschiedliche Eigenschaften. PrinterSettings ist die Klasse, die diese Eigenschaften beschreibt. Das Schöne ist, dass Sie sich überhaupt nicht um ein Objekt dieser Klasse bemühen müssen, denn das den Druckauftrag beschreibende PrintDocument-Objekt stellt eine Referenz darauf bereit.
Die Klasse »PageSettings«
Jeder Druckauftrag kann anders aussehen: Jede Seite kann unterschiedlich formatiert werden, beispielsweise der Seitenrand. Dafür ist ein PageSettings-Objekt zuständig. Auch hier gilt: Ein PageSettings-Objekt wird vom Druckjob (dem PrintDocument-Objekt) bereitgestellt, wie brauchen diese Klasse demnach nicht zu instanziieren.
|